package com.springboot.service;

import com.springboot.common.Result;
import com.springboot.entity.Cart;
import com.baomidou.mybatisplus.extension.service.IService;
import com.springboot.vo.CartVO;

/**
 * <p>
 * 购物车表 服务类
 * </p>
 *
 * @author zjb
 * @since 2025-10-30
 */
public interface ICartService extends IService<Cart> {

    /**
     * 添加商品到购物车
     *
     * @param userId    用户ID
     * @param productId 商品ID
     * @param skuId     SKU ID（可为空）
     * @param quantity  数量
     * @return 添加结果
     */
    Result addToCart(Integer userId, Integer productId, Integer skuId, Integer quantity);

    /**
     * 获取用户购物车
     *
     * @param userId 用户ID
     * @return 购物车信息
     */
    Result getCart(Integer userId);

    /**
     * 更新购物车项数量
     *
     * @param userId   用户ID
     * @param cartId   购物车项ID
     * @param quantity 数量
     * @return 更新结果
     */
    Result updateQuantity(Integer userId, Integer cartId, Integer quantity);

    /**
     * 删除购物车项
     *
     * @param userId 用户ID
     * @param cartId 购物车项ID
     * @return 删除结果
     */
    Result deleteCartItem(Integer userId, Integer cartId);

    /**
     * 切换购物车项选中状态
     *
     * @param userId 用户ID
     * @param cartId 购物车项ID
     * @return 切换结果
     */
    Result toggleCheck(Integer userId, Integer cartId);

    /**
     * 批量切换购物车项选中状态
     *
     * @param userId  用户ID
     * @param cartIds 购物车项ID列表
     * @param checked 选中状态：1-选中，0-未选中
     * @return 切换结果
     */
    Result batchToggleCheck(Integer userId, Integer[] cartIds, Integer checked);

    /**
     * 清空用户购物车
     *
     * @param userId 用户ID
     * @return 清空结果
     */
    Result clearCart(Integer userId);
}